<?php
/**
* Classe de operação da tabela 'trabalho'. Banco de Dados Mysql.
* Estas classes não contemplam meu projeto final, por estarem obsoletas, estou contruindo
* novos templates em Persistent Data Object com definição de prepared statements contra
* sql injection, utilize para meio de testes, nunca coloque em produção, servindo
* apenas de trampolin para classe de produção
*
* @autor: Alessander Wasem
* @data: 2014-05-21 21:57
*/
class TrabalhoMySqlDAO implements TrabalhoDAO{
        
        protected $table = 'trabalho';
        
	/**
	 * Implementa o dominio chave primária na seleção de único registro
	 *
	 * @parametro String $id primary key
	 * @retorna TrabalhoMySql 
	 */
         
	public function load($id){
            $sql = "SELECT * FROM $this->table WHERE id_trabalho = :id_trabalho";
            $stmt = ConnectionFactory::prepare($sql);
            $stmt->bindParam(':id_trabalho', $id, PDO::PARAM_INT);
            $stmt->execute();
            return $stmt->fetch();
	}

	/**
	 * Obtem todos o registros das Tabelas
	 */
         
	public function queryAll(){
	   $sql = "SELECT * FROM $this->table";
           $stmt = ConnectionFactory::prepare($sql);
           $stmt->execute();
           return $stmt->fetchAll();	
	}
	
	/**
 	 * Exclui um registro da tabela
 	 * @parametro trabalho chave primária
 	 */
         
	public function delete($id){
            $sql = "DELETE FROM $this->table WHERE id_trabalho = :id_trabalho";
            $stmt = ConnectionFactory::prepare($sql);
            $stmt->bindParam(':id_trabalho', $id, PDO::PARAM_INT);
            return $stmt->execute();
	}
	
	/**
 	 * Inseri um registro na tabela
 	 *
 	 * @parametro TrabalhoMySql trabalho
 	 */
         
	public function insert(Trabalho $Trabalho){
           $sql = "INSERT INTO $this->table (fk_tematica, fk_categoria, fk_modalidade, nivel, titulo, titulo_ordenar, palavra1, palavra2, palavra3, apoiadores, resumo, resumo2, status, data_cadastro, data_atualizacao, ip_cadastro, ip_atualizacao, fk_sessao, seq_sessao, nota, premiado) VALUES ( :fkTematica,  :fkCategoria,  :fkModalidade,  :nivel,  :titulo,  :tituloOrdenar,  :palavra1,  :palavra2,  :palavra3,  :apoiadores,  :resumo,  :resumo2,  :status,  :dataCadastro,  :dataAtualizacao,  :ipCadastro,  :ipAtualizacao,  :fkSessao,  :seqSessao,  :nota,  :premiado)";
  
           
	   $fkTematica = $Trabalho->getFkTematica();
	   $fkCategoria = $Trabalho->getFkCategoria();
	   $fkModalidade = $Trabalho->getFkModalidade();
	   $nivel = $Trabalho->getNivel();
	   $titulo = $Trabalho->getTitulo();
	   $tituloOrdenar = $Trabalho->getTituloOrdenar();
	   $palavra1 = $Trabalho->getPalavra1();
	   $palavra2 = $Trabalho->getPalavra2();
	   $palavra3 = $Trabalho->getPalavra3();
	   $apoiadores = $Trabalho->getApoiadores();
	   $resumo = $Trabalho->getResumo();
	   $resumo2 = $Trabalho->getResumo2();
	   $status = $Trabalho->getStatus();
	   $dataCadastro = $Trabalho->getDataCadastro();
	   $dataAtualizacao = $Trabalho->getDataAtualizacao();
	   $ipCadastro = $Trabalho->getIpCadastro();
	   $ipAtualizacao = $Trabalho->getIpAtualizacao();
	   $fkSessao = $Trabalho->getFkSessao();
	   $seqSessao = $Trabalho->getSeqSessao();
	   $nota = $Trabalho->getNota();
	   $premiado = $Trabalho->getPremiado();
           
           $stmt = ConnectionFactory::prepare($sql);
           
           
	   $stmt->bindParam(':fkTematica', $fkTematica);
	   $stmt->bindParam(':fkCategoria', $fkCategoria);
	   $stmt->bindParam(':fkModalidade', $fkModalidade);
	   $stmt->bindParam(':nivel', $nivel);
	   $stmt->bindParam(':titulo', $titulo);
	   $stmt->bindParam(':tituloOrdenar', $tituloOrdenar);
	   $stmt->bindParam(':palavra1', $palavra1);
	   $stmt->bindParam(':palavra2', $palavra2);
	   $stmt->bindParam(':palavra3', $palavra3);
	   $stmt->bindParam(':apoiadores', $apoiadores);
	   $stmt->bindParam(':resumo', $resumo);
	   $stmt->bindParam(':resumo2', $resumo2);
	   $stmt->bindParam(':status', $status);
	   $stmt->bindParam(':dataCadastro', $dataCadastro);
	   $stmt->bindParam(':dataAtualizacao', $dataAtualizacao);
	   $stmt->bindParam(':ipCadastro', $ipCadastro);
	   $stmt->bindParam(':ipAtualizacao', $ipAtualizacao);
	   $stmt->bindParam(':fkSessao', $fkSessao);
	   $stmt->bindParam(':seqSessao', $seqSessao);
	   $stmt->bindParam(':nota', $nota);
	   $stmt->bindParam(':premiado', $premiado);
           return $stmt->execute();    
	}
	
	/**
 	 * atualiza um registro da tabela
 	 *
 	 * @parametro TrabalhoMySql trabalho
 	 */
         
	public function update(Trabalho $Trabalho){
           $sql = "UPDATE $this->table SET fk_tematica = :fk_tematica, fk_categoria = :fk_categoria, fk_modalidade = :fk_modalidade, nivel = :nivel, titulo = :titulo, titulo_ordenar = :titulo_ordenar, palavra1 = :palavra1, palavra2 = :palavra2, palavra3 = :palavra3, apoiadores = :apoiadores, resumo = :resumo, resumo2 = :resumo2, status = :status, data_cadastro = :data_cadastro, data_atualizacao = :data_atualizacao, ip_cadastro = :ip_cadastro, ip_atualizacao = :ip_atualizacao, fk_sessao = :fk_sessao, seq_sessao = :seq_sessao, nota = :nota, premiado = :premiado WHERE id_trabalho = :id";
           $id = $Trabalho->getIdTrabalho();
     
           
	   $fkTematica = $Trabalho->getFkTematica();
	   $fkCategoria = $Trabalho->getFkCategoria();
	   $fkModalidade = $Trabalho->getFkModalidade();
	   $nivel = $Trabalho->getNivel();
	   $titulo = $Trabalho->getTitulo();
	   $tituloOrdenar = $Trabalho->getTituloOrdenar();
	   $palavra1 = $Trabalho->getPalavra1();
	   $palavra2 = $Trabalho->getPalavra2();
	   $palavra3 = $Trabalho->getPalavra3();
	   $apoiadores = $Trabalho->getApoiadores();
	   $resumo = $Trabalho->getResumo();
	   $resumo2 = $Trabalho->getResumo2();
	   $status = $Trabalho->getStatus();
	   $dataCadastro = $Trabalho->getDataCadastro();
	   $dataAtualizacao = $Trabalho->getDataAtualizacao();
	   $ipCadastro = $Trabalho->getIpCadastro();
	   $ipAtualizacao = $Trabalho->getIpAtualizacao();
	   $fkSessao = $Trabalho->getFkSessao();
	   $seqSessao = $Trabalho->getSeqSessao();
	   $nota = $Trabalho->getNota();
	   $premiado = $Trabalho->getPremiado();
           
           $stmt = ConnectionFactory::prepare($sql);
           $stmt->bindParam(':id', $id);
           
           
	   $stmt->bindParam(':fkTematica', $fkTematica);
	   $stmt->bindParam(':fkCategoria', $fkCategoria);
	   $stmt->bindParam(':fkModalidade', $fkModalidade);
	   $stmt->bindParam(':nivel', $nivel);
	   $stmt->bindParam(':titulo', $titulo);
	   $stmt->bindParam(':tituloOrdenar', $tituloOrdenar);
	   $stmt->bindParam(':palavra1', $palavra1);
	   $stmt->bindParam(':palavra2', $palavra2);
	   $stmt->bindParam(':palavra3', $palavra3);
	   $stmt->bindParam(':apoiadores', $apoiadores);
	   $stmt->bindParam(':resumo', $resumo);
	   $stmt->bindParam(':resumo2', $resumo2);
	   $stmt->bindParam(':status', $status);
	   $stmt->bindParam(':dataCadastro', $dataCadastro);
	   $stmt->bindParam(':dataAtualizacao', $dataAtualizacao);
	   $stmt->bindParam(':ipCadastro', $ipCadastro);
	   $stmt->bindParam(':ipAtualizacao', $ipAtualizacao);
	   $stmt->bindParam(':fkSessao', $fkSessao);
	   $stmt->bindParam(':seqSessao', $seqSessao);
	   $stmt->bindParam(':nota', $nota);
	   $stmt->bindParam(':premiado', $premiado);
           
           return $stmt->execute(); 
	}

}
